package ws;

import java.util.ArrayList;
import java.util.Collection;
import org.orm.PersistentException;
import org.orm.PersistentTransaction;
import SOAPVO.AlumnoSOAPVO;
import com.google.gson.Gson;


public class AlumnoSOA {
	
	public String add(String al_id_alumno, String al_nombre, String cu_id_curso)throws PersistentException{
 	
	int resultado=1;	
	String mensaje="";
	
	try{
	
		if((al_id_alumno == null) || (al_id_alumno.equals("")) || (al_nombre==null) || 
				(al_nombre.equals("")) || (cu_id_curso==null) || (cu_id_curso.equals("")) ){
			
			mensaje="ingrese rut, nombre y curso del alumno";
			resultado=0;
			
			}
		else{
			
			if(resultado==1){
				
				orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();

				
				//instanciar crear objeto alumno
				orm.dao.Tan_alumnoDAO lormTan_AlumnoDAO = lDAOFactory.getTan_alumnoDAO();
				orm.Tan_alumno lormTan_alumno = lormTan_AlumnoDAO.createTan_alumno();
				
				//instancia buscar objeto curso
				orm.dao.Tan_cursoDAO lormTan_CursoDAO =lDAOFactory.getTan_cursoDAO();
				orm.Tan_curso lormTan_curso = lormTan_CursoDAO.getTan_cursoByORMID(Integer.parseInt(cu_id_curso));

				
				//setear objeto alumno
				lormTan_alumno.setAl_id_alumno(al_id_alumno);
				lormTan_alumno.setAl_nombre(al_nombre);
				lormTan_alumno.setCu_id_curso(lormTan_curso);
				
				
				mensaje =lormTan_alumno.getAl_nombre();
				lormTan_AlumnoDAO.save(lormTan_alumno);

			   }
		}
	}

	
	catch (Exception e) {
		e.printStackTrace();
}
	mensaje= mensaje+"\n ha sido agregado(a)";
	return mensaje;
}
	public String getByNombre(String nombre){
		
		String json = null;
		
        
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		Collection<AlumnoSOAPVO> coleccionAlumnos = new ArrayList<AlumnoSOAPVO>();
        orm.Tan_alumno[] ormAlumno;
		
        if((nombre == null) || (nombre == (""))){
        	
        	json = "0";        	
        }
        
        else{
        	
        	try{
        		ormAlumno = lDAOFactory.getTan_alumnoDAO().listTan_alumnoByQuery("al_nombre like'%"+nombre+"%'", null);
                if (ormAlumno.length == 0) {
                    json = "1";
                }
                else{
                	for (int i = 0; i < ormAlumno.length; i++ ){
                        AlumnoSOAPVO alumnoencontrado = AlumnoSOAPVO.crearAlumnoSOAPVO(ormAlumno[i]);
                        coleccionAlumnos.add(alumnoencontrado);
                        System.out.println("alumno :"+ormAlumno[i]);
                       
                	}
                    Gson gson = new Gson();
                    json = gson.toJson(coleccionAlumnos);
                }
        	}
        	catch (PersistentException e){
        		e.printStackTrace();
        		json = "2";        	
        	}
		
        } 
        return json;  
	}
	
	   public static String buscarcurso(int idcurso) {
           
		   int id = 1;
           String json = null;
           
           orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
           Collection<AlumnoSOAPVO> coleccionAlumnoSOAPVO = new ArrayList<AlumnoSOAPVO>();
           orm.Tan_alumno[] ormAlumno;
           try {
                   // Creamos el objeto psrs comparar el curso enviado al curso que tenemos
                   ormAlumno = lDAOFactory.getTan_alumnoDAO().listTan_alumnoByQuery( "cu_id_curso='" + idcurso + "'", null);
                   for (int i = 0; i < ormAlumno.length; i++) {
                	   System.out.println(ormAlumno[i].getAl_nombre());
                   AlumnoSOAPVO alumnoencurso = AlumnoSOAPVO.crearAlumnoSOAPVO(ormAlumno[i]);
                   coleccionAlumnoSOAPVO.add(alumnoencurso);
                   }// Se crear el objeto gson para guardar los datos
                   Gson gson = new Gson();
                   json = gson.toJson(coleccionAlumnoSOAPVO);
  
           } catch (PersistentException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
                   }
           return json;
          
   }

}
